package handler

import (
	"github.com/gin-gonic/gin"
	"gorm.io/gorm"
	"news-mgmt-sys/model"
	"strconv"
)

func AddLike(c *gin.Context) {
	userId, _ := strconv.Atoi(c.PostForm("userId"))
	newsId, _ := strconv.Atoi(c.PostForm("newsId"))
	if userId == 0 || newsId == 0 {
		c.JSON(200, gin.H{
			"code": 400,
			"msg":  "不能为0",
		})
		return
	}
	var likes model.Likes
	err := model.DB.Where("user_id=?", userId).Find(&likes).Error
	if err != nil {
		c.JSON(200, gin.H{
			"code": 400,
			"msg":  "点赞记录查询失败",
		})
		return
	}
	if likes.ID > 0 {
		c.JSON(200, gin.H{
			"code": 400,
			"msg":  "用户已点赞",
		})
		return
	}
	var news model.News
	err = model.DB.Model(&news).Where("id=?", newsId).Update("like_num", gorm.Expr("like_num+?", 1)).Error
	if err != nil {
		c.JSON(200, gin.H{
			"code": 400,
			"msg":  "点赞+1失败",
		})
		return
	}
	data := model.Likes{
		UserId: userId,
		NewsId: newsId,
	}
	err = model.DB.Create(&data).Error
	if err != nil {
		c.JSON(200, gin.H{
			"code": 500,
			"msg":  "点赞失败",
		})
		return
	} else {
		c.JSON(200, gin.H{
			"code": 200,
			"msg":  "点赞成功",
		})
		return
	}
}
